package com.lczyfz.istep.modules.openstack.api.neutron.interfaces;

import com.lczyfz.istep.modules.openstack.api.neutron.model.Router;

import java.util.HashMap;
import java.util.List;


public interface Routers {
	/**
	 * �г�����·��
	 * @return
	 */
	public List<Router> getRouters();

	/**
	 * ·������
	 * @param router_id
	 * @return
	 */
	public Router getRouterDetail(String router_id);

	/**
	 * ����·��
	 * @param routerinput
	 * @return
	 */
	public Router createRouter(Router routerinput);
	/**
	 * ɾ��·��
	 * @param router_id
	 */
	public void deleteRouter(String router_id);

	/**
	 * ��ӽӿڵ�·����
	 * @param router_id
	 * @param subnet_id
	 * @return
	 */
	public Router addRouterInterface(String router_id , String subnet_id,int type);

	/**
	 * ��·����ɾ��ӿ�
	 * @param router_id
	 * @param subnet_id
	 * @return
	 */
	public Router removeRouterInterface(String router_id , String subnet_id,int type);

	/**
	 * ����·��
	 * @param router_id
	 * @param routerupdateinput
	 * @return
	 */
	public Router updateRouter(String router_id , Router routerupdateinput);
	/**
	 * ����·�ɱ�
	 * @param router_id
	 * @param routerList
	 * @return
	 */
	public Router addRouterList(String router_id , HashMap<String,String> routerList);

	/**
	 * ɾ��·�ɱ�
	 * @param router_id
	 * @param routerList
	 * @return
	 */
	public Router removeRouterList(String router_id , HashMap<String,String> routerList);
	/**
	 * 根据路由，外部网络ID，外部网络子网的ID，与固定地址来设置路由网关。
	 * @param router_id
	 * @param exNetworkId
	 * @param exSubnetId
	 * @param ipAddress
	 * @return
	 */
	public Router setExGateWay(String router_id ,String exNetworkId , String exSubnetId , String ipAddress);

}
